from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont


def watermark_Image(img_path, output_path, text, pos):
    img = Image.open(img_path)
    drawing = ImageDraw.Draw(img)
    black = (10, 5, 12)
    font = ImageFont.load_default(48)
    drawing.text(pos, text, fill=black, font=font)
    img.show()
    img.save(output_path)


def add_watermark(image_path, output_path, watermark_text, position):
    # 打开图像文件并转换为 RGBA 模式以支持透明度
    image = Image.open(image_path).convert('RGBA')

    # 创建一个与原始图像相同大小的透明图层
    txt_layer = Image.new('RGBA', image.size, (255, 255, 255, 0))

    # 创建一个可绘制的对象
    draw = ImageDraw.Draw(txt_layer)

    try:
        # 加载中文字体文件，假设系统中有 'simhei.ttf' 黑体字型
        font = ImageFont.truetype("simhei.ttf", 48)  # 根据需要调整字体大小
    except IOError:
        print("The specified font file could not be found or loaded.")
        return

    # 设置文本颜色为半透明黑色
    text_color = (0, 0, 0, 128)  # RGBA, 最后一个值是透明度

    # 在指定位置添加水印文本
    draw.text(position, watermark_text, fill=text_color, font=font)
    draw.text((120,500), watermark_text, fill=text_color, font=font)
    draw.text((120,900), watermark_text, fill=text_color, font=font)
    draw.text((120, 1200), watermark_text, fill=text_color, font=font)

    # 将带有水印的透明图层与原始图像合并
    watermarked = Image.alpha_composite(image, txt_layer)

    # 保存带有水印的新图像为 PNG 格式以保持透明度
    watermarked.save(output_path, format='PNG')
    print(f"Watermarked image saved to {output_path}")


if __name__ == '__main__':
    img = 'F:\\房本\\004.jpg'
    # watermark_Image(img, 'watermark_img.png', 'Python', pos=(10, 10))
    add_watermark(img, 'F:\\房本\\004-new.png', '仅供房屋出租使用', (120, 100))
